package com.shiguiwu.springmybatis.designpattern.bridge.pay.channel;

import com.shiguiwu.springmybatis.designpattern.bridge.pay.mode.IPayMode;
import lombok.extern.slf4j.Slf4j;

import java.math.BigDecimal;

/**
 * @description: 支付场景
 * @author: stone
 * @date: Created by 2021/8/24 12:19
 * @version: 1.0.0
 * @pakeage: com.shiguiwu.springmybatis.designpattern.bridge.pay
 */
@Slf4j
public abstract class Pay {

    protected IPayMode payMode;

    public Pay(IPayMode payMode) {
        this.payMode = payMode;
    }

    /**
     * 在这个类中定义了了⽀支付⽅方式的需要实现的划账接⼝口： transfer ，以及桥接接⼝口； IPayMode ，并
     * 在构造函数中⽤用户⽅方⾃自⾏行行选择⽀支付⽅方式。
     * 如果没有接触过此类实现，可以重点关注  IPayMode payMode ，这部分是桥接的核⼼心
     * @param uId
     * @param tradeId
     * @param amount
     * @return
     */
    public abstract String transfer(String uId, String tradeId, BigDecimal amount);
}
